package cn.ycc1.boot3autoconfig;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 配置文件的配置参考官方文档
 * 自动配置原理：重要
 * @EnableAutoConfiguration 自动配置
 * 自动配置之源
 * 每个自动配置类实现自动配置功能
 * 所有在配置文件中能配置的属性都在 xxxProperties 配置类中封装，配置文件能配置的属性就是这些 xxxProperties 封装过的
 * @ConditionalOnWebApplication 判断当前应用是否是 web 应用，如果是则当前配置生效
 * @ConditionalOnClass 判断当前项目有没有这个类，如果有则当前配置生效
 * springMVC解决乱码问题的过滤器
 *
 *  springBoot的精髓：
 *  1. 会加载大量的自动配置类
 *  2. 需要的功能有没有默认的
 *  3. 看看自动配置类到底配置了哪些组件
 *  4. 给容器的自动配置类添加组件的时候，会从properties类中获取某些属性
 *
 * @conditional注解：条件注解，满足Conditional指定的条件，则方法会返回null或空，这样容器中就不会装载Bean
 * 自动配置必须在一定的条件下才能生效
 * 可以启动 debug=true 模式，查看自动配置报告,方便查看自动配置类是否生效 有已匹配的和未匹配的
 */
@SpringBootApplication
public class Boot3AutoconfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(Boot3AutoconfigApplication.class, args);
    }

}
